export function tablesToExcel(sheets, filename) {
  let uri = 'data:application/vnd.ms-excel;base64,'
    , html_start = `<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40">`
    , template_ExcelWorksheet = `<x:ExcelWorksheet><x:Name>{SheetName}</x:Name><x:WorksheetSource HRef="sheet{SheetIndex}.htm"/></x:ExcelWorksheet>`
    , template_ListWorksheet = `<o:File HRef="sheet{SheetIndex}.htm"/>`
    , template_HTMLWorksheet = `
------=_NextPart_dummy
Content-Location: sheet{SheetIndex}.htm
Content-Type: text/html; charset=UTF-8

` + html_start + `
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <link id="Main-File" rel="Main-File" href="../WorkBook.htm">
    <link rel="File-List" href="filelist.xml">
    <xml><x:WorksheetOptions><x:Print><x:ValidPrinterInfo /></x:Print></x:WorksheetOptions></xml>
</head>
<body>{SheetContent}</body>
</html>`
    let template_WorkBook = `MIME-Version: 1.0
X-Document-Type: Workbook
Content-Type: multipart/related; boundary="----=_NextPart_dummy"

------=_NextPart_dummy
Content-Location: WorkBook.htm
Content-Type: text/html; charset=UTF-8

` + html_start + `
<head>
<meta name="Excel Workbook Frameset">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="File-List" href="filelist.xml">
<!--[if gte mso 9]><xml>
 <x:ExcelWorkbook>
    <x:ExcelWorksheets>{ExcelWorksheets}</x:ExcelWorksheets>
    <x:ActiveSheet>0</x:ActiveSheet>
 </x:ExcelWorkbook>
</xml><![endif]-->
</head>
<frameset>
    <frame src="sheet0.htm" name="frSheet">
    <noframes><body><p>This page uses frames, but your browser does not support them.</p></body></noframes>
</frameset>
</html>
{HTMLWorksheets}
Content-Location: filelist.xml
Content-Type: text/xml; charset="utf-8"

<xml xmlns:o="urn:schemas-microsoft-com:office:office">
    <o:MainFile HRef="../WorkBook.htm"/>
    {ListWorksheets}
    <o:File HRef="filelist.xml"/>
</xml>
------=_NextPart_dummy--`
    , format = function (s, c) { return s.replace(/{(\w+)}/g, function (m, p) { return c[p]; }) }

  var context_WorkBook = {
    ExcelWorksheets: ''
    , HTMLWorksheets: ''
    , ListWorksheets: ''
  };

  sheets.forEach((p, SheetIndex) => {
    var SheetName = p.sheetName;
    context_WorkBook.ExcelWorksheets += format(template_ExcelWorksheet, {
      SheetIndex: SheetIndex
      , SheetName: SheetName||'sheet'+SheetIndex
    });
    context_WorkBook.HTMLWorksheets += format(template_HTMLWorksheet, {
      SheetIndex: SheetIndex
      , SheetContent: p.content
    });
    context_WorkBook.ListWorksheets += format(template_ListWorksheet, {
      SheetIndex: SheetIndex
    });
  });

  var link = document.createElement("a");
  link.href=uri+window.btoa(unescape(encodeURIComponent(format(template_WorkBook, context_WorkBook))))
  link.download = filename || 'Workbook.xls';
  link.target = '_blank';
  document.body.appendChild(link).click();
  document.body.removeChild(link);
}

export function getHTML(data, column, labelKey = 'label', dataKey = 'prop') {
    let html = '<table><thead><tr>'
    //生成表头
    column.forEach(v => {
        html += `<th>${v[labelKey] == null ? '' : v[labelKey]}</th>`
    })
    html += '</tr></thead><tbody>'
    //生成数据
    data.forEach(v => {
        html += '<tr>'
        column.forEach(v0 => {
            if (v0.label.includes('时间')) {
                html += `<td style="vnd.ms-excel.numberformat:@">${v[v0[dataKey]] == null ? '' : v[v0[dataKey]]}</td>`
            } else {
                html += `<td>${v[v0[dataKey]] == null ? '' : v[v0[dataKey]]}</td>`
            }
        })
        html += '</tr>'
    })
    html += '</tbody></table>'
    return html
}